﻿using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace XChipUtils
{
    public class GenerateFileHelp : IFileHelper
    {
        /// <summary>
        /// 根据指定的文件名和内容创建文本文件并写入内容
        /// </summary>
        /// <param name="fileName">要创建的文件名</param>
        /// <param name="content">要写入文件的内容</param>
        public void StreamFileCreateText(string fileName, string content)
        {
            // 创建文本文件并写入内容
            using (StreamWriter sw = File.CreateText(fileName))
            {
                sw.WriteLine(content);
            }
            // 使用 using 语句自动关闭 StreamWriter，无需手动调用 Flush 和 Close
        }

        /// <summary>
        /// 关闭所有与指定名称相关的进程
        /// </summary>
        public void CloseProcessByAll()
        {
            // 获取所有运行中的进程
            Process[] myprocess = Process.GetProcesses();
            foreach (Process p in myprocess)
            {
                // 关闭与 cmd、conhost 或 Windows Command Processor 相关的进程
                if (p.ProcessName.Contains("cmd") ||
                    p.ProcessName.Contains("conhost") ||
                    p.ProcessName.Contains("Windows Command Processor"))
                {
                    // 关闭当前进程
                    p.Close(); // 或使用 p.Kill() 完全终止进程
                }
            }
        }

        /// <summary>
        /// 根据文件夹路径和搜索模式获取文件的创建时间和路径
        /// </summary>
        /// <param name="path">文件夹路径</param>
        /// <param name="searchPattern">搜索模式，如 *.txt</param>
        /// <returns>包含文件路径和创建时间的字典</returns>
        public Dictionary<string, DateTime> GetFileTimePath(string path, string searchPattern)
        {
            // 获取指定路径下符合搜索模式的所有文件
            string[] filePathArr = Directory.GetFiles(path, searchPattern, SearchOption.TopDirectoryOnly);
            Dictionary<string, DateTime> fileCreateDate = new Dictionary<string, DateTime>();

            // 遍历文件路径数组并获取每个文件的创建时间
            foreach (string filePath in filePathArr)
            {
                FileInfo fi = new FileInfo(filePath);
                fileCreateDate[filePath] = fi.CreationTime; // 将文件路径及其创建时间添加到字典中
            }

            // 按创建时间对字典进行排序并返回
            return fileCreateDate.OrderBy(f => f.Value).ToDictionary(f => f.Key, f => f.Value);
        }
    }

}
